#include <stdio.h>
#include <stdlib.h>
#include "plansza.h"

void zeruj_plansze(struct poleStruct pole[])
{
	//valid_moves_count=0;
        int x;
	for(x=0;x<12;x++)
	{
		pole[x].typ=Bialy;
		pole[20+x].typ=Czarny;
	}
	for(x=12;x<20;x++)
		pole[x].typ=Pusty;
}


void plansza(struct poleStruct pole[])
{

	zeruj_plansze(pole);
	int x=0;
	for(x=0;x<32;x++)pole[x].lp=x;


	// tworzenie pwowiazan miedzy polami
	for(x=0;x<4;x++)
	{
		pole[x].prawy=&pole[x+4];
		pole[x+8].prawy=&pole[x+4+8];
		pole[x+16].prawy=&pole[x+4+16];
		pole[x+24].prawy=&pole[x+4+24];
		pole[4+x].lewy=&pole[x+8];
		pole[12+x].lewy=&pole[x+16];
		pole[20+x].lewy=&pole[x+24];
		pole[4+x].lewy=&pole[x+4+4];
	}

	for(x=0;x<3;x++)
	{
		pole[4+x].prawy=&pole[4+5+x];
		pole[12+x].prawy=&pole[12+5+x];
		pole[20+x].prawy=&pole[20+5+x];

		pole[1+x].lewy=&pole[4+x];
		pole[9+x].lewy=&pole[12+x];
		pole[17+x].lewy=&pole[20+x];
		pole[25+x].lewy=&pole[28+x];
	}
	pole[0].lewy=0;
	pole[8].lewy=0;
	pole[16].lewy=0;
	pole[24].lewy=0;

	pole[28].lewy=0;
	pole[29].lewy=0;
	pole[30].lewy=0;
	pole[31].lewy=0;

	pole[28].prawy=0;
	pole[29].prawy=0;
	pole[30].prawy=0;
	pole[31].prawy=0;

	pole[7].prawy=0;
	pole[15].prawy=0;
	pole[23].prawy=0;

	for(x=0;x<32;x++)
	{
		pole[x].tlewy=0;
		pole[x].tprawy=0;
	};

	for(x=0;x<32;x++)
	{
		if(pole[x].lewy!=0)
				pole[pole[x].lewy->lp].tprawy=&pole[x];
		if(pole[x].prawy!=0)
				pole[pole[x].prawy->lp].tlewy=&pole[x];
	};

        printf("Plansza wygenerowana\n");
};

void wyswietlPolaczenia(struct poleStruct pole[])
{
    int tmp;
    for(tmp=0; tmp<32; tmp++)
    {
        printf("%d\n",pole[tmp].lp);
        if (pole[tmp].lewy!=0) printf("L: %d\n", pole[tmp].lewy->lp);
        if (pole[tmp].prawy!=0) printf("P: %d\n", pole[tmp].prawy->lp);
        if (pole[tmp].tlewy!=0) printf("TL: %d\n", pole[tmp].tlewy->lp);
        if (pole[tmp].tprawy!=0) printf("TP: %d\n", pole[tmp].tprawy->lp);
        printf("\n");
    }
}